import numpy as np


class CelestialBody:
    """
    通用天体基类
    """
    def __init__(self, name, color, mass, radius, position, velocity):
        """
        初始化天体对象
        :param name: 天体名称
        :param color: 天体颜色
        :param mass: 天体质量
        :param radius: 天体半径
        :param position: 天体初始位置坐标[x, y, z]
        :param velocity: 天体初始速度向量[vx, vy, vz]
        """
        self.name     = name
        self.color    = color
        self.mass     = mass
        self.radius   = radius
        self.position = np.array(position, dtype=np.float64)
        self.velocity = np.array(velocity,  dtype=np.float64)

    def update(self, acc, dt):
        """
        使用欧拉积分方法更新物体的运动状态，根据给定的加速度和时间步长来更新物体的速度和位置
        :param acc: 物体受到的加速度，可以是标量或向量
        :param dt: 时间步长，表示两次更新之间的时间间隔
        """
        self.velocity += acc * dt
        self.position += self.velocity * dt

# 作为天体CelestialBody的子类
class FixedStar(CelestialBody):
    """恒星"""
    pass